type callbackId

class type ['a] eventItf = object
	method connect: 'a -> callbackId
	method disconnect: callbackId -> unit
end

class ['a] event : unit -> object
	method connect : 'a -> callbackId
	method disconnect : callbackId -> unit
	method as_event_itf : 'a eventItf
	method emit : ('a -> unit) -> unit
end

val emtr : 'a -> (('a -> unit) -> unit)
val emtr2 : 'a -> 'b -> (('a -> 'b -> unit) -> unit)
val emtr3 : 'a -> 'b -> 'c -> (('a -> 'b -> 'c -> unit) -> unit)
val emtr4 : 'a -> 'b -> 'c -> 'd -> (('a -> 'b -> 'c -> 'd -> unit) -> unit)
val emtr5 : 'a -> 'b -> 'c -> 'd -> 'e -> (('a -> 'b -> 'c -> 'd -> 'e -> unit) -> unit)
